﻿//using Microsoft.AspNetCore.Http;
//using Microsoft.AspNetCore.Mvc;
//using Microsoft.AspNetCore.Mvc.Controllers;
//using Microsoft.AspNetCore.Mvc.Filters;
//using System;
//using System.IO;
//using System.Linq;
//using ZhCun.WebCommon.AL;
//using ZhCun.WebCommon.DBModels;

//namespace ZhCun.WebCommon.WebApi
//{
//    /// <summary>
//    /// 弃用
//    /// </summary>
//    public class ApiAuthorizeAttribute : Attribute, IAuthorizationFilter
//    {
//        protected virtual string GetToken(AuthorizationFilterContext context)
//        {
//            string token = context.HttpContext.GetHeader(Constants.TOKEN_NAME);            
//            return token;
//        }

//        protected virtual void Verification(AuthorizationFilterContext context, TSysLoginToken token)
//        {
//            if (token == null)
//            {
//                context.Result = new ObjectResult("未登录") { StatusCode = StatusCodes.Status401Unauthorized };
//            }
//        }

//        public void OnAuthorization(AuthorizationFilterContext context)
//        {
//            // 如果不是一个控制器方法则直接返回
//            if (!(context.ActionDescriptor is ControllerActionDescriptor action))
//            {
//                return;
//            }
//            //如果Action加了[NonAuthorize] 跳过权限检查
//            if (action.MethodInfo.GetCustomAttributes(typeof(NonLoginVerifyAttribute), false).Any())
//            {
//                return;
//            }
//            string token = context.HttpContext.GetHeader(Constants.TOKEN_NAME);
//            if (string.IsNullOrWhiteSpace(token))
//            {
//                token = context.HttpContext.GetCookie(Constants.TOKEN_NAME);
//            }
//            var tokenObj = LoginStateCache.Get(token);
//            Verification(context, tokenObj);
//        }
//    }
//}